beep when a keybinding didn't change adjustment->value.
authorMichael Natterer <mitch@imendio.com>
Tue, 2 Jan 2007 16:40:44 +0000 (16:40 +0000)
committerMichael Natterer <mitch@src.gnome.org>
Tue, 2 Jan 2007 16:40:44 +0000 (16:40 +0000)
2007-01-02  Michael Natterer  <mitch@imendio.com>

* gtk/gtkrange.c (gtk_range_scroll) (gtk_range_move_slider): beep
when a keybinding didn't change adjustment->value.

svn path=/trunk/; revision=17021

ChangeLog
gtk/gtkrange.c

index 9c68fbc497a72965aa2cbdf7da4622c01940479f..81660e8756d63fef1831b7d925440a7856f5eb03 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-01-02  Michael Natterer  <mitch@imendio.com>
+
+       * gtk/gtkrange.c (gtk_range_scroll) (gtk_range_move_slider): beep
+       when a keybinding didn't change adjustment->value.
+
 2007-01-02  Matthias Clasen  <mclasen@redhat.com>
 
        * gtk/gtktextbuffer.c (gtk_text_view_key_press_event):
index 5887dee18766bb7e2c1dda7d312c73a51dea073a..d39f537983d6b8d21a3a034125823ab895afdccf 100644 (file)
@@ -162,7 +162,7 @@ static void gtk_range_move_slider              (GtkRange         *range,
                                                 GtkScrollType     scroll);
 
 /* Internals */
-static void          gtk_range_scroll                   (GtkRange      *range,
+static gboolean      gtk_range_scroll                   (GtkRange      *range,
                                                          GtkScrollType  scroll);
 static gboolean      gtk_range_update_mouse_location    (GtkRange      *range);
 static void          gtk_range_calc_layout              (GtkRange      *range,
@@ -2353,10 +2353,12 @@ scroll_end (GtkRange *range)
                  &handled);
 }
 
-static void
+static gboolean
 gtk_range_scroll (GtkRange     *range,
                   GtkScrollType scroll)
 {
+  gdouble old_value = range->adjustment->value;
+
   switch (scroll)
     {
     case GTK_SCROLL_STEP_LEFT:
@@ -2446,6 +2448,8 @@ gtk_range_scroll (GtkRange     *range,
     case GTK_SCROLL_NONE:
       break;
     }
+
+  return range->adjustment->value != old_value;
 }
 
 static void
@@ -2488,7 +2492,8 @@ gtk_range_move_slider (GtkRange     *range,
         }
     }
 
-  gtk_range_scroll (range, scroll);
+  if (! gtk_range_scroll (range, scroll))
+    gtk_widget_error_bell (GTK_WIDGET (range));
 
   /* Policy DELAYED makes sense with key events,
    * but DISCONTINUOUS doesn't, so we update immediately